package com.example.knight.impl2;

import com.example.knight.Knight;
import com.example.knight.Quest;

/**
 * 依赖注入 DI
 * BraveKnight没有与任何特定的Quest实现发生耦合，只有是实现了Quest接口，就都可以
 * 这就是DI的最大的收益，松耦合
 * 对象只通过接口来表明依赖关系，对与这个对象来说并不需要知道访问的是什么具体实现
 */
public class BraveKnight implements Knight {

	/*
	 * 此处通过spring，在配置中注入对应的实现
	 */
	private Quest quest;

	public BraveKnight(Quest quest) {
		this.quest = quest;
	}

	public void embarkOnQuest() {
		quest.embark();
	}

}
